# 请注意，find_circles（）方法将只能找到完全在图像内部的圆。圈子之外的
# 图像/ roi被忽略...

import sensor, image, time, lcd

sensor.reset()
sensor.set_pixformat(sensor.RGB565) # 灰度更快
sensor.set_framesize(sensor.QQVGA)
sensor.set_hmirror(True)
sensor.set_vflip(True)
sensor.skip_frames(time = 2000)
clock = time.clock()
lcd.init()

while(True):
    clock.tick()

    #lens_corr(1.8)畸变矫正
    img = sensor.snapshot().lens_corr(1.8)
    lcd.display(img)
    x = img.width() - 40
    y = img.height() - 30
    count = 1

    # r_min，r_max和r_step控制测试圆的半径。
    # 缩小测试圆半径的数量可以大大提升性能。
    # threshold = 3500比较合适。如果视野中检测到的圆过多，请增大阈值；
    # 相反，如果视野中检测到的圆过少，请减少阈值。
    # 修改threshold或x_margin都能改变识别的范围
    for c in img.find_circles(threshold = 4500, x_margin = 5, y_margin = 10, r_margin = 10,r_min = 2, r_max = 100, r_step = 2):
        img.draw_string(c.x(), c.y(), '·', color = (255, 20, 147), scale=3)
        img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
        count+=1
        lcd.display(img)

    img.draw_string(x, y, str(count), color = (255, 20, 147), scale=3)
    lcd.display(img)
    print("count =", str(count))
